#ifndef DISKSTORAGE_H
#define DISKSTORAGE_H

#include "WPILib.h"

//------------------------------------------------------------------------------
// DEFINE DiskStorage CLASS
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
class DiskStorage
{

	public:
		enum DiskActions {NoActionNeeded, DisksToReverse, DisksToReady, DisksToLoad};
		DiskStorage();
		~DiskStorage();
		int DetermineDiskAction();
		void LoadDisks();
		bool ReadyDisksForShooting();
		void ReverseDisks();

	private:
		static const UINT32 HELIX_MOTOR_CH     	   =  5;
		static const UINT32 LOADER_ENTRY_SW_CH     =  1;
		static const UINT32 LOADER_BOTTOM_SW_CH    =  2;
		static const UINT32 LOADER_LOW_MID_SW_CH   =  3;
		static const UINT32 LOADER_HIGH_MID_SW_CH  =  4;
		static const UINT32 LOADER_HIGH_SW_CH      =  5;
		static const UINT32 DIGITAL_SIDECAR_MODULE =  2;

		static const double HELIX_SPEED   		=  .2;
		static const double REVERSE_SPEED = -.2;
		static const UINT32 ALL_STOP      =  0;

		DigitalInput	*pLoaderEntrySwitch;
		DigitalInput	*pLoaderBottomSwitch;
		DigitalInput	*pLoaderLowMidSwitch;
		DigitalInput	*pLoaderHighMidSwitch;
		DigitalInput	*pLoaderHighSwitch;
		Victor			*pHelixMotor;

		bool  diskOneLoaded;
		bool  diskTwoLoaded;
		bool  diskThreeLoaded;
		bool  diskFourLoaded;
		bool  diskEntering;
		bool  movingForward;
		bool  finishedReadying;
		int	  highestDiskPlace;
		int   lastHighestDiskPlace;
		int   diskAction;

};
#endif
